home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games 1996 July / Amiga Games 1996 #7.iso / spiele / publicdomain / ta-hack / source / gui.c < prev    next >
C/C++ Source or Header  |  1996-04-22  |  6KB  |  303 lines

  1. #ifndef MAKE_ID
  2. #define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
  3. #endif
  4.  
  5. #ifdef _DCC
  6. #define __inline
  7. #endif
  8.  
  9. #include "GUI.h"
  10.  
  11. struct ObjApp * CreateApp(void)
  12. {
  13.     struct ObjApp * Object;
  14.  
  15.     APTR    MENU, MENU_PROJ, MENU_ABOUT, MENU_A_MUI, MENUBarLabel2, MENU_QUIT;
  16.     APTR    GRP_ROOT, GRP_MAIN, SPACE1, TX_TITLE, SPACE2, LA_LIVES, SPACE3, LA_MONEY;
  17.     APTR    SPACE4, GRP_HORIZ, SPACE5, BT_LOAD, BT_SAVE, SPACE6, SPACE7;
  18.  
  19.     if (!(Object = AllocVec(sizeof(struct ObjApp), MEMF_PUBLIC|MEMF_CLEAR)))
  20.         return(NULL);
  21.  
  22.     Object->STR_TX_TITLE = "TA-Hack\n©1996 ALeX Kazik";
  23.     Object->STR_TX_STATUS = NULL;
  24.  
  25.     Object->STR_GRP_PAGES[0] = "Main";
  26.     Object->STR_GRP_PAGES[1] = "Players";
  27.     Object->STR_GRP_PAGES[2] = "Load/Save";
  28.     Object->STR_GRP_PAGES[3] = NULL;
  29.     Object->CY_PLAYERContent[0] = "Player1";
  30.     Object->CY_PLAYERContent[1] = "Player2";
  31.     Object->CY_PLAYERContent[2] = NULL;
  32.  
  33.     SPACE1 = HVSpace;
  34.  
  35.     TX_TITLE = TextObject,
  36.         MUIA_Background, MUII_FILLSHINE,
  37.         MUIA_Frame, MUIV_Frame_Text,
  38.         MUIA_Text_Contents, Object->STR_TX_TITLE,
  39.         MUIA_Text_PreParse, "\033c",
  40.         MUIA_Text_SetMin, TRUE,
  41.     End;
  42.  
  43.     SPACE2 = HVSpace;
  44.  
  45.     Object->TX_STATUS = TextObject,
  46.         MUIA_Background, MUII_TextBack,
  47.         MUIA_Frame, MUIV_Frame_Text,
  48.         MUIA_Text_Contents, Object->STR_TX_STATUS,
  49.         MUIA_Text_PreParse, "\033c",
  50.     End;
  51.  
  52.     GRP_MAIN = GroupObject,
  53.         Child, SPACE1,
  54.         Child, TX_TITLE,
  55.         Child, SPACE2,
  56.         Child, Object->TX_STATUS,
  57.     End;
  58.  
  59.     Object->CY_PLAYER = CycleObject,
  60.         MUIA_Weight, 0,
  61.         MUIA_Cycle_Entries, Object->CY_PLAYERContent,
  62.     End;
  63.  
  64.     LA_LIVES = Label("Lives:");
  65.  
  66.     Object->STR_LIVES = StringObject,
  67.         MUIA_Frame, MUIV_Frame_String,
  68.         MUIA_String_Accept, "0123456789",
  69.         MUIA_String_MaxLen, 3,
  70.         MUIA_String_Format, MUIV_String_Format_Center,
  71.     End;
  72.  
  73.     SPACE3 = HVSpace;
  74.  
  75.     LA_MONEY = Label("Money:");
  76.  
  77.     Object->STR_MONEY = StringObject,
  78.         MUIA_Frame, MUIV_Frame_String,
  79.         MUIA_String_Accept, "0123456789",
  80.         MUIA_String_MaxLen, 7,
  81.         MUIA_String_Format, MUIV_String_Format_Center,
  82.     End;
  83.  
  84.     Object->GRP_PLAYER = GroupObject,
  85.         MUIA_FramePhantomHoriz, TRUE,
  86.         MUIA_Frame, MUIV_Frame_Group,
  87.         MUIA_Group_Rows, 2,
  88.         MUIA_Group_SameSize, TRUE,
  89.         Child, Object->CY_PLAYER,
  90.         Child, LA_LIVES,
  91.         Child, Object->STR_LIVES,
  92.         Child, SPACE3,
  93.         Child, LA_MONEY,
  94.         Child, Object->STR_MONEY,
  95.     End;
  96.  
  97.     SPACE4 = HVSpace;
  98.  
  99.     SPACE5 = HVSpace;
  100.  
  101.     BT_LOAD = TextObject,
  102.         ButtonFrame,
  103.         MUIA_Background, MUII_ButtonBack,
  104.         MUIA_ControlChar, 'l',
  105.         MUIA_Text_Contents, "LOAD",
  106.         MUIA_Text_PreParse, "\033c",
  107.         MUIA_Text_HiChar, 'l',
  108.         MUIA_InputMode, MUIV_InputMode_RelVerify,
  109.     End;
  110.  
  111.     BT_SAVE = TextObject,
  112.         ButtonFrame,
  113.         MUIA_Background, MUII_ButtonBack,
  114.         MUIA_ControlChar, 's',
  115.         MUIA_Text_Contents, "SAVE",
  116.         MUIA_Text_PreParse, "\033c",
  117.         MUIA_Text_HiChar, 's',
  118.         MUIA_InputMode, MUIV_InputMode_RelVerify,
  119.     End;
  120.  
  121.     SPACE6 = HVSpace;
  122.  
  123.     GRP_HORIZ = GroupObject,
  124.         MUIA_Group_Horiz, TRUE,
  125.         Child, SPACE5,
  126.         Child, BT_LOAD,
  127.         Child, BT_SAVE,
  128.         Child, SPACE6,
  129.     End;
  130.  
  131.     SPACE7 = HVSpace;
  132.  
  133.     Object->GA_STATUS = GaugeObject,
  134.         GaugeFrame,
  135.         MUIA_FixHeight, 10,
  136.         MUIA_Gauge_Horiz, TRUE,
  137.         MUIA_Gauge_InfoText, "\0332Game in Memory.",
  138.         MUIA_Gauge_Max, 100,
  139.     End;
  140.  
  141.     Object->GRP_LS = GroupObject,
  142.         Child, SPACE4,
  143.         Child, GRP_HORIZ,
  144.         Child, SPACE7,
  145.         Child, Object->GA_STATUS,
  146.     End;
  147.  
  148.     Object->GRP_PAGES = RegisterObject,
  149.         MUIA_Register_Titles, Object->STR_GRP_PAGES,
  150.         MUIA_Frame, MUIV_Frame_Group,
  151.         Child, GRP_MAIN,
  152.         Child, Object->GRP_PLAYER,
  153.         Child, Object->GRP_LS,
  154.     End;
  155.  
  156.     GRP_ROOT = GroupObject,
  157.         Child, Object->GRP_PAGES,
  158.     End;
  159.  
  160.     MENU_ABOUT = MenuitemObject,
  161.         MUIA_Menuitem_Title, "About...",
  162.     End;
  163.  
  164.     MENU_A_MUI = MenuitemObject,
  165.         MUIA_Menuitem_Title, "About MUI...",
  166.     End;
  167.  
  168.     MENUBarLabel2 = MUI_MakeObject(MUIO_Menuitem, NM_BARLABEL, 0, 0, 0);
  169.  
  170.     MENU_QUIT = MenuitemObject,
  171.         MUIA_Menuitem_Title, "Quit...",
  172.     End;
  173.  
  174.     MENU_PROJ = MenuitemObject,
  175.         MUIA_Menuitem_Title, "Project",
  176.         MUIA_Family_Child, MENU_ABOUT,
  177.         MUIA_Family_Child, MENU_A_MUI,
  178.         MUIA_Family_Child, MENUBarLabel2,
  179.         MUIA_Family_Child, MENU_QUIT,
  180.     End;
  181.  
  182.     MENU = MenustripObject,
  183.         MUIA_Family_Child, MENU_PROJ,
  184.     End;
  185.  
  186.     Object->WINDOW = WindowObject,
  187.         MUIA_Window_Title, "TA-Hack",
  188.         MUIA_Window_Menustrip, MENU,
  189.         MUIA_Window_ID, MAKE_ID('0', 'W', 'I', 'N'),
  190.         MUIA_Window_SizeGadget, FALSE,
  191.         WindowContents, GRP_ROOT,
  192.     End;
  193.  
  194.     Object->App = ApplicationObject,
  195.         MUIA_Application_Author, "ALeX Kazik",
  196.         MUIA_Application_Base, "TA-HACK",
  197.         MUIA_Application_Title, "TA-Hack",
  198.         MUIA_Application_Version, "$VER: TA-Hack 1.0 (22.04.96)",
  199.         MUIA_Application_Copyright, "Anyone",
  200.         MUIA_Application_Description, "Tower Assault Hack Prog",
  201.         SubWindow, Object->WINDOW,
  202.     End;
  203.  
  204.  
  205.     if (!Object->App)
  206.     {
  207.         FreeVec(Object);
  208.         return(NULL);
  209.     }
  210.  
  211.     DoMethod(MENU_ABOUT,
  212.         MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  213.         Object->App,
  214.         2,
  215.         MUIM_Application_ReturnID, ID_ABOUT
  216.         );
  217.  
  218.     DoMethod(MENU_A_MUI,
  219.         MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  220.         Object->App,
  221.         2,
  222.         MUIM_Application_ReturnID, ID_ABOUT_MUI
  223.         );
  224.  
  225.     DoMethod(MENU_QUIT,
  226.         MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  227.         Object->App,
  228.         2,
  229.         MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit
  230.         );
  231.  
  232.     DoMethod(Object->WINDOW,
  233.         MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
  234.         Object->App,
  235.         2,
  236.         MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit
  237.         );
  238.  
  239.     DoMethod(Object->GRP_PAGES,
  240.         MUIM_Notify, MUIA_Group_ActivePage, MUIV_EveryTime,
  241.         Object->App,
  242.         2,
  243.         MUIM_Application_ReturnID, ID_PAGES
  244.         );
  245.  
  246.     DoMethod(Object->CY_PLAYER,
  247.         MUIM_Notify, MUIA_Cycle_Active, MUIV_EveryTime,
  248.         Object->App,
  249.         2,
  250.         MUIM_Application_ReturnID, ID_PLAYER
  251.         );
  252.  
  253.     DoMethod(Object->STR_LIVES,
  254.         MUIM_Notify, MUIA_String_Acknowledge, MUIV_EveryTime,
  255.         Object->App,
  256.         2,
  257.         MUIM_Application_ReturnID, ID_LIVES
  258.         );
  259.  
  260.     DoMethod(Object->STR_MONEY,
  261.         MUIM_Notify, MUIA_String_Acknowledge, MUIV_EveryTime,
  262.         Object->App,
  263.         2,
  264.         MUIM_Application_ReturnID, ID_MONEY
  265.         );
  266.  
  267.     DoMethod(BT_LOAD,
  268.         MUIM_Notify, MUIA_Pressed, FALSE,
  269.         Object->App,
  270.         2,
  271.         MUIM_Application_ReturnID, ID_LOAD
  272.         );
  273.  
  274.     DoMethod(BT_SAVE,
  275.         MUIM_Notify, MUIA_Pressed, FALSE,
  276.         Object->App,
  277.         2,
  278.         MUIM_Application_ReturnID, ID_SAVE
  279.         );
  280.  
  281.     DoMethod(Object->WINDOW,
  282.         MUIM_Window_SetCycleChain, Object->GRP_PAGES,
  283.         Object->CY_PLAYER,
  284.         Object->STR_LIVES,
  285.         Object->STR_MONEY,
  286.         BT_LOAD,
  287.         BT_SAVE,
  288.         NULL);
  289.  
  290.     set(Object->WINDOW,
  291.         MUIA_Window_Open, TRUE
  292.         );
  293.  
  294.  
  295.     return(Object);
  296. }
  297.  
  298. void DisposeApp(struct ObjApp * Object)
  299. {
  300.     MUI_DisposeObject(Object->App);
  301.     FreeVec(Object);
  302. }
  303.